package exception;
/**
 * java异常处理机制：try...catch
 * try{
 *     代码片段
 * }catch(XXXException e){
 *     当try的代码片段出现XXXException时的补救措施
 * }
 *
 * */
public class TryCatchDemo {
    public static void main(String[] args) {





        /*
        System.out.println("程序开始运行...");
        String line = null;
        System.out.println(line.length());
        System.out.println("程序结束了...");
        */


        System.out.println("程序开始运行...");
        try{
              //try语句中某句代码如果出现了异常，出错代码以下的代码都不执行了
              //try语句中如果不出现异常，catch块不执行了
           // String line = null;
              //try语句中如果出现异常，出错代码以下的代码都不执行了
              //try语句中如果
           // System.out.println(line.length());
              //因为上一句发生了异常，所以下面的代码统统不执行了
           // String line1 = "";
           // System.out.println(line1.charAt(0));
            String line2 = "abc";
            System.out.println(Integer.parseInt(line2));
    //    }catch (NullPointerException e){//NullPointerException:空指针异常
    //        System.out.println("出现了空指针异常，并解决了...");
    //    }catch (StringIndexOutOfBoundsException e){//StringIndexOutOfBoundsException:针对try中出现字符串下标越界的异常
    //        System.out.println("字符串下标越界异常，并处理了...");
    //    }catch (NumberFormatException e){//NumberFormatException:数字类型转换异常
    //        System.out.println("出现了数字类型转换异常，并处理了");
        }catch (NullPointerException | StringIndexOutOfBoundsException e){//若多个异常具有相同处理方式时，可以合并到一个catch中进行处理
            System.out.println("空指针异常和字符串下标越界异常已经处理了");
        }catch (Exception e){//通用异常:可以在最后捕获超类异常，凡是该异常的子类都可以被捕获并处理
            System.out.println("通用异常已经处理了");
        }
        System.out.println("程序结束了...");




    }
}
